package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffDocumentDto
 * @使用场景
 */
@Data
public class BffDocumentDto implements Serializable {

    /**
     * 文档ID
     */
    @NotNull(message = "文档ID不能为空")
    @ApiModelProperty("文档ID")
    private String unstructuredDataId;

    /**
     * 文档后缀
     */
    @ApiModelProperty("文档后缀")
    private String postfix;

    /**
     * 文件相对路径地址
     */
    @ApiModelProperty("文件相对路径地址")
    private String fileRelativePathAccess;

    /**
     * 来源文档关系ID
     */
    @ApiModelProperty("来源文档关系ID")
    private String sourceRelationshipId;

    /**
     * 关系类型编码
     */
    @NotNull(message = "关系类型编码不能为空")
    @ApiModelProperty("关系类型编码")
    private String relationshipType;

    /**
     * 是否是网盘引用关系 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否是网盘引用关系不能为空")
    @ApiModelProperty("是否是网盘引用关系")
    private String isNetworkReference;
    /**
     * 文档名称
     */
    @ApiModelProperty("文档名称")
    private String unstructuredDataName;

    /**
     * 文件大小
     */
    @ApiModelProperty("文件大小")
    private String fileSize;

    /**
     * 文档类型 FILE:文档 MEDIA_CONTENT:媒体内容 OTHER:其它
     */
    @ApiModelProperty("文档类型")
    private String unstructuredDataType;

    /**
     * 是否支持预览 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否支持预览")
    private String isSupportPreview;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     * 文档明细类型 WORD:WORD文档 EXCEL:EXCEL文档 PDF:PDF文档
     */
    @ApiModelProperty("文档明细类型")
    private String unstructuredDataDetailType;

    /**
     * 是否来自个人网盘文件 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否来自个人网盘文件")
    private String isUserUpload;

    /**
     * 文件夹ID
     */
    @ApiModelProperty("文件夹ID")
    private String unstructuredDataFolderId;

    /**
     * 文档编号
     */
    @ApiModelProperty("文档编号")
    private String unstructuredDataNumber;

    /**
     * 文档简介
     */
    @ApiModelProperty("文档简介")
    private String unstructuredDataDesc;

    /**
     * 创建人就职记录ID
     */
    @ApiModelProperty("创建人就职记录ID")
    private String createInductionId;
    /**
     * 归属父内容表主键ID
     */
    @ApiModelProperty("归属父内容表主键ID")
    private String ownParentContentId;

    /**
     * 就职单位对象实例ID
     */
    @ApiModelProperty("就职单位对象实例ID")
    private String entityId;

    /**
     * 冗余部门名称
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 文档关系ID
     */
    @ApiModelProperty("文档关系ID")
    private String unstructuredDataRelationshipId;

    /**
     * 归属内容表主键ID
     */
    @ApiModelProperty("归属内容表主键ID")
    private String ownEntityId;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 文档展示全路径地址
     */
    @ApiModelProperty("文档展示全路径地址")
    private String fileRelativeAllPathAccess;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffDocumentDto that = (BffDocumentDto) o;
        return unstructuredDataId == that.unstructuredDataId && postfix == that.postfix && fileRelativePathAccess == that.fileRelativePathAccess && sourceRelationshipId == that.sourceRelationshipId && relationshipType == that.relationshipType && isNetworkReference == that.isNetworkReference && unstructuredDataName == that.unstructuredDataName && fileSize == that.fileSize && unstructuredDataType == that.unstructuredDataType && isSupportPreview == that.isSupportPreview && createTime == that.createTime && unstructuredDataDetailType == that.unstructuredDataDetailType && isUserUpload == that.isUserUpload && unstructuredDataFolderId == that.unstructuredDataFolderId && unstructuredDataNumber == that.unstructuredDataNumber && unstructuredDataDesc == that.unstructuredDataDesc && createInductionId == that.createInductionId && ownParentContentId == that.ownParentContentId && entityId == that.entityId && deptShortName == that.deptShortName && nickName == that.nickName && idCardName == that.idCardName && userFace == that.userFace && unstructuredDataRelationshipId == that.unstructuredDataRelationshipId && ownEntityId == that.ownEntityId && themeContentId == that.themeContentId && orderNumber == that.orderNumber && operateTime == that.operateTime && fileRelativeAllPathAccess == that.fileRelativeAllPathAccess;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), unstructuredDataId, postfix, fileRelativePathAccess, sourceRelationshipId, relationshipType, isNetworkReference, unstructuredDataName, fileSize, unstructuredDataType, isSupportPreview, createTime, unstructuredDataDetailType, isUserUpload, unstructuredDataFolderId, unstructuredDataNumber, unstructuredDataDesc, createInductionId, ownParentContentId, entityId, deptShortName, nickName, idCardName, userFace, unstructuredDataRelationshipId, ownEntityId, themeContentId, orderNumber, operateTime, fileRelativeAllPathAccess);
    }

}
